home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 July & August / PCWorld_2006-07-08_cd.bin / komunikace / apache / apache_2[1].2.2-win32-x86-no_ssl.msi / Data1.cab / _92C8A9DC643D6B008792C41E8C2DCABA < prev    next >
Text File  |  2006-04-29  |  4KB  |  136 lines

  1. /* Copyright 1999-2005 The Apache Software Foundation or its licensors, as
  2.  * applicable.
  3.  *
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  *
  8.  *     http://www.apache.org/licenses/LICENSE-2.0
  9.  *
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16.  
  17. /**
  18.  * @file win32/os.h
  19.  * @brief This file in included in all Apache source code. It contains definitions
  20.  * of facilities available on _this_ operating system (HAVE_* macros),
  21.  * and prototypes of OS specific functions defined in os.c or os-inline.c
  22.  * 
  23.  * @defgroup APACHE_OS_WIN32 win32
  24.  * @ingroup  APACHE_OS
  25.  * @{
  26.  */
  27.  
  28. #ifdef WIN32
  29.  
  30. #ifndef AP_OS_H
  31. #define AP_OS_H
  32. /* Delegate windows include to the apr.h header, if USER or GDI declarations
  33.  * are required (for a window rather than console application), include
  34.  * windows.h prior to any other Apache header files.
  35.  */
  36. #include "apr_pools.h"
  37.  
  38. #include <io.h>
  39. #include <fcntl.h>
  40.  
  41. #define PLATFORM "Win32"
  42.  
  43. /* going away shortly... */
  44. #define HAVE_DRIVE_LETTERS
  45. #define HAVE_UNC_PATHS
  46. #define CASE_BLIND_FILESYSTEM
  47.  
  48. #define APACHE_MPM_DIR  "server/mpm/winnt" /* generated on unix */
  49.  
  50. #include <stddef.h>
  51.  
  52. #ifdef __cplusplus
  53. extern "C" {
  54. #endif
  55.  
  56. /* BIG RED WARNING: exit() is mapped to allow us to capture the exit
  57.  * status.  This header must only be included from modules linked into
  58.  * the ApacheCore.dll - since it's a horrible behavior to exit() from
  59.  * any module outside the main() block, and we -will- assume it's a
  60.  * fatal error.
  61.  */
  62.  
  63. AP_DECLARE_DATA extern int ap_real_exit_code;
  64.  
  65. #define exit(status) ((exit)((ap_real_exit_code==2) \
  66.                                 ? (ap_real_exit_code = (status)) \
  67.                                 : ((ap_real_exit_code = 0), (status))))
  68.  
  69. #ifdef AP_DECLARE_EXPORT
  70.  
  71. /* Defined in util_win32.c and available only to the core module for
  72.  * win32 MPM design.
  73.  */
  74.  
  75. AP_DECLARE(apr_status_t) ap_os_proc_filepath(char **binpath, apr_pool_t *p);
  76.  
  77. typedef enum {
  78.     AP_DLL_WINBASEAPI = 0,    // kernel32 From WinBase.h
  79.     AP_DLL_WINADVAPI = 1,     // advapi32 From WinBase.h
  80.     AP_DLL_WINSOCKAPI = 2,    // mswsock  From WinSock.h
  81.     AP_DLL_WINSOCK2API = 3,   // ws2_32   From WinSock2.h
  82.     AP_DLL_defined = 4        // must define as last idx_ + 1
  83. } ap_dlltoken_e;
  84.  
  85. FARPROC ap_load_dll_func(ap_dlltoken_e fnLib, char* fnName, int ordinal);
  86.  
  87. PSECURITY_ATTRIBUTES GetNullACL();
  88. void CleanNullACL(void *sa);
  89.  
  90. DWORD wait_for_many_objects(DWORD nCount, CONST HANDLE *lpHandles, 
  91.                             DWORD dwSeconds);
  92.  
  93. int set_listeners_noninheritable(apr_pool_t *p);
  94.  
  95.  
  96. #define AP_DECLARE_LATE_DLL_FUNC(lib, rettype, calltype, fn, ord, args, names) \
  97.     typedef rettype (calltype *ap_winapi_fpt_##fn) args; \
  98.     static ap_winapi_fpt_##fn ap_winapi_pfn_##fn = NULL; \
  99.     __inline rettype ap_winapi_##fn args \
  100.     {   if (!ap_winapi_pfn_##fn) \
  101.             ap_winapi_pfn_##fn = (ap_winapi_fpt_##fn) ap_load_dll_func(lib, #fn, ord); \
  102.         return (*(ap_winapi_pfn_##fn)) names; }; \
  103.  
  104. /* Win2K kernel only */
  105. AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINADVAPI, BOOL, WINAPI, ChangeServiceConfig2A, 0, (
  106.     SC_HANDLE hService, 
  107.     DWORD dwInfoLevel, 
  108.     LPVOID lpInfo),
  109.     (hService, dwInfoLevel, lpInfo));
  110. #undef ChangeServiceConfig2
  111. #define ChangeServiceConfig2 ap_winapi_ChangeServiceConfig2A
  112.  
  113. /* WinNT kernel only */
  114. AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINBASEAPI, BOOL, WINAPI, CancelIo, 0, (
  115.     IN HANDLE hFile),
  116.     (hFile));
  117. #undef CancelIo
  118. #define CancelIo ap_winapi_CancelIo
  119.  
  120. /* Win9x kernel only */
  121. AP_DECLARE_LATE_DLL_FUNC(AP_DLL_WINBASEAPI, DWORD, WINAPI, RegisterServiceProcess, 0, (
  122.     DWORD dwProcessId,
  123.     DWORD dwType),
  124.     (dwProcessId, dwType));
  125. #define RegisterServiceProcess ap_winapi_RegisterServiceProcess
  126.  
  127. #endif /* def AP_DECLARE_EXPORT */
  128.  
  129. #ifdef __cplusplus
  130. }
  131. #endif
  132.  
  133. #endif  /* ndef AP_OS_H */
  134. #endif  /* def WIN32 */
  135. /** @} */
  136.